
#!/bin/bash

#此脚本目标：主要是每隔一定的时间去读取目录的文件数据，并以文件为单位，统计每个文件的大小和行数，以及这个文件是来自于哪一个部门等信息

# xxxx
# xxxx
# xxxx
# xxxx
timeFormat=`date +"%Y-%m-%d %H:%M:%S"`
time=`date +"%Y%m%d%H%M%S"`
files=`find /basoft/hmtData/dataHardLine/  -name  \*[0-9].\*[0-9].\*[0-9].[0-9]\*   -mmin +10 `; #-mtime  -0.0125# xxxx
localName=`hostname`
mkdir  -p /root/hmt/dataCheck/ #创建输出文件夹

for file in $files;
 do
      filename=${file##*/} # xxxx

     #提取文件名的类型前缀
      prefix=${filename%%_*} #注意这里不能用awk分隔符提取，因为不同类型的文件名字符长度是不一样的  # xxxx
      if [[ ${prefix} == "lv" ]];then #但如果碰到特殊情况 lv开头的(lv开头的又分两种类型) ,所有要查询判断
           prefix=${filename%%_log*} # xxxx
      fi

     #提取文件名的ip
     tmpIP=${filename%_*} # xxxx
     IP=${tmpIP##*_} # xxxx

     #提取文件名的时间
     tmpFileTime1=${filename##*_}
     fileTime1=${tmpFileTime1%.*}
     fileTime2=${fileTime1%.*} #这里只所以怎么做为了保险起见, 有点情况下会出现脚本jx_auth_log_xx.xx.xx.xx_20221118.complate.txt 等多个后缀的情况

     # xxxx
     byteRes=`du -b $file | awk {'  print $1  '}` #指打印出$1第一列的文件大小 第二例$2是文件名

     #统计行数
     numRes=`cat $file | grep -v "^$"  | wc -l  `

     #当前文件个数(即1个)
     filecount=1

     # xxxx
     out=${localName}@${filename}@${prefix}@${IP}@${fileTime2}@${byteRes}@${numRes}@${filecount}@${timeFormat} # xxxx
     echo ${out} >> /root/hmt/dataCheck/check_${localName}_${time}.txt
 done

# xxxx
rm -rf /basoft/hmtData/dataHardLine/*

echo $time  check_statis.sh ok

